package com.lord.label.controller;

import com.lord.label.common.ResultAjax;
import com.lord.label.domain.User;
import com.lord.label.interceptor.WebSecurityConfig;
import com.lord.label.service.UserService;
import com.lord.label.utils.CryptUtils;
import com.lord.label.utils.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;

/**
 *
 * @Description: 用户管理控制层
 * @author Lord
 * @date 2017年6月1日 上午9:51:38
 */
@Controller
public class UserController {

    @Autowired
    private UserService userService;

    /**
     *
     * @Title: login
     * @Description: 登录页面
     * @return
     * @author Lord
     * @date 2017年6月1日 上午9:52:37
     */
    @GetMapping("/manager/login_view")
    public String login() {
        return "login";
    }


    /**
     *
     * @Title: loginPost
     * @Description: 登录验证方法
     * @param user	用户提交信息
     * @param bindingResult	springMVC参数验证
     * @return
     * @author Lord
     * @date 2017年6月1日 上午9:53:11
     */
    @PostMapping("/manager/login")
    @ResponseBody
    public ResultAjax<User> loginPost(User user, BindingResult bindingResult, HttpSession session) throws Exception {
        if(bindingResult.hasErrors()){
            return ResultUtil.error(1, bindingResult.getFieldError().getDefaultMessage());
        }
        User userInfo = userService.findByLoginName(user.getLoginname());

        if (!user.getPassword().equals(CryptUtils.GetMD5Code(userInfo.getPassword()))) {
            return ResultUtil.error(2, "账户密码不匹配~");
        }

        // 设置session
        session.setAttribute(WebSecurityConfig.SESSION_KEY, user.getLoginname());

        return ResultUtil.success();
    }


    /**
     *
     * @Title: logout
     * @Description: 注销登录
     * @param session   当前用户信息session
     * @return
     * @author Lord
     * @date 2017年6月1日 上午9:53:11
     */
    @GetMapping("/manager/logout")
    public String logout(HttpSession session) {
        // 移除session
        session.removeAttribute(WebSecurityConfig.SESSION_KEY);
        return "redirect:/manager/login_view";
    }

}
